package com.java.simple.smallspring.beans.factory;

import com.java.simple.smallspring.beans.BeansException;
import com.java.simple.smallspring.beans.factory.config.AutowireCapableBeanFactory;
import com.java.simple.smallspring.beans.factory.config.BeanDefinition;
import com.java.simple.smallspring.beans.factory.config.ConfigurableBeanFactory;

/**
 * @author zhoujunlin
 * @date 2022年08月20日 21:30
 * @desc
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {

    /**
     * 实例化单例对象
     */
    void preInstantiateSingletons();

    /**
     * 根据beanName获取BeanDefinition
     *
     * @param beanName
     * @return
     * @throws BeansException
     */
    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

}
